﻿// using System;
// using Cinemachine;
// using DG.Tweening;
// using Gp.Input;
// using MoreMountains.TopDownEngine;
// using UnityEngine;
// using UnityEngine.InputSystem;
//
// namespace Gp.Scripts.GUI
// {
//     /// <summary>
//     /// Simple movable camera implementation.
//     /// </summary>
//     public class CameraController : MonoBehaviour
//     {
//         [SerializeField] private float scrollSpeed = 15;
//         // public float ScrollEdge = 0.01f;
//         [SerializeField]private float rotateSpeed = 8f;
//         [SerializeField] private float zoomSpeed = 5f;  
//         // [SerializeField] private CinemachineVirtualCamera _cinemachine;
//
//         [SerializeField] private float maxHeightOffset = 36;
//         [SerializeField] private float minHeightOffset = 22;
//
//
//         // private CinemachineTransposer _transposer;
//         // private Vector3 _targetHeightOffset;
//
//         //
//         // private float _originalZAxisOffset;
//         // private float _originalXDamping;
//         //
//         // private void Start() {
//         //     _transposer = _cinemachine.GetCinemachineComponent<CinemachineTransposer>();
//         //     _targetHeightOffset = _transposer.m_FollowOffset;
//         //     _originalZAxisOffset = _targetHeightOffset.z;
//         //     _originalXDamping = _transposer.m_XDamping;
//         // }
//         //
//         // private void Update()
//         // {
//         //     var inputManager = GridBattleInputSystem.Instance;
//         //     
//         //     
//         //     Vector2 input = inputManager.GetCameraMoveVector();
//         //     var t = transform;
//         //     Vector3 moveVector = t.forward * input.y + t.right * input.x;
//         //     t.position += moveVector * scrollSpeed * Time.deltaTime;
//         //
//         //
//         //     if (inputManager.IsRotateCameraViewButtonDown()){
//         //         Vector3 angle = transform.localEulerAngles;
//         //         
//         //         angle.y = transform.localEulerAngles.y + inputManager.GetMouseMoveDistance() * rotateSpeed * Time.deltaTime;
//         //         
//         //         transform.localEulerAngles = angle;
//         //     }
//         //
//         //     var cameraZoomAmount = Mathf.Clamp(inputManager.GetCameraZoomAmount(), -1, 1);
//         //
//         //     // if (mouseScroll == Vector2.zero) return;
//         //     
//         //     _targetHeightOffset.y = Mathf.Clamp(_targetHeightOffset.y - zoomSpeed * cameraZoomAmount, minHeightOffset, maxHeightOffset);
//         //     _transposer.m_FollowOffset = Vector3.Lerp(_transposer.m_FollowOffset, _targetHeightOffset, zoomSpeed * Time.deltaTime);
//         //
//         //
//         //
//         //     if (inputManager.CameraViewAngleChange()) {
//         //         const float offset = -0.1f;
//         //         if (Math.Abs(_targetHeightOffset.z - offset) < 0.01 ) {
//         //             _targetHeightOffset.z = _originalZAxisOffset;
//         //             DOTween.To(()=>_transposer.m_XDamping, x=>_transposer.m_XDamping = x, _originalXDamping, 0.1f);
//         //         }
//         //         else {
//         //             _targetHeightOffset.z = offset;
//         //             DOTween.To(()=>_transposer.m_XDamping, x=>_transposer.m_XDamping = x, 0, 0.1f);
//         //         }
//         //     }
//         // }
//         
//         
//         
//         
//         public void FlatMoveTo(Vector3 position) {
//             var temp = position;
//             temp.y = transform.position.y;
//             transform.DOMove(temp, 0.5f);
//         } 
//     }
// }
//
